package com.LeeCode;

/**
 * 重新安排会议得到最多空余时间 I
 */

public class Code3439 {
    public static void main(String[] args) {
        int eventTime = 10;
        int k = 1;
        int[] startTime = {0, 2, 9};
        int[] endTime = {1, 4, 10};

        System.out.println(new Code3439().maxFreeTime(eventTime, k, startTime, endTime));

    }

    public int maxFreeTime(int eventTime, int k, int[] startTime, int[] endTime) {
        // total 表示k窗口内活动的总时长
        int s = 0, total = 0, maxTime = startTime[0];

        for (int i = 0; i < startTime.length; i++) {

            // 入
            total += endTime[i] - startTime[i];

            // 还没有到窗口大小
            if (i < k - 1) continue;

            // 更新
            if (i < startTime.length - 1) {
                maxTime = Math.max(maxTime, startTime[i + 1] - s - total);
            } else {
                maxTime = Math.max(maxTime, eventTime - s - total);
            }

            // 出
            s = endTime[i - k + 1];
            total -= endTime[i - k + 1] - startTime[i - k + 1];

        }
        return maxTime;
    }
}
